
#define INITGUID
#include "P:/mycode/mshtml/winsdk/public/sdk/inc/guiddef.h"

#include "P:/mycode/mshtml/winsdk/public/internal/shell/inc/ieguidp.h"
#include "P:/mycode/mshtml/winsdk/public/internal/shell/inc/iepriv.h"
//#include "P:/mycode/mshtml/inetcore/mshtml/src/other/include/othrguid.h"

// P:\mycode\mshtml\inetcore\mshtml\src\core\cdutil\themehlp.cxx
#include "P:/mycode/mshtml/winsdk/public/sdk/inc/uxtheme.h"
//#include "P:/mycode/mshtml/inetcore/mshtml/src/core/include/cdutil.hxx"

// #define DEFINE_STRING_CONSTANTS
// #include "P:/mycode/mshtml/shell/shdocvw/htmlstr.h"

struct IETHREADPARAM;
struct BANDINFOSFB;
interface ITravelLog;
interface IEFreeThreadedHandShake;
interface IMoniker;
interface IDeskBand;
interface IHTMLWindow2;
interface IBindCtx;
interface IShellBrowser;
interface IMimeMessage;

class CObjectInfo;
typedef CObjectInfo* LPOBJECTINFO;
typedef CObjectInfo const* LPCOBJECTINFO;

struct NEWFOLDERINFO;
typedef NEWFOLDERINFO* PNEWFOLDERINFO;

// http://www.yfvb.com/help/web/index.htm?page=identifiers.htm {B45FF030-4447-11D2-85DE-00C04FA35C89}
DEFINE_GUID(CLSID_SearchAssistantOC,     0xB45FF030, 0x4447, 0x11D2, 0x85, 0xDE, 0x00, 0xC0, 0x4F, 0xA3, 0x5C, 0x89);

// 72423E8F-8011-11d2-BE79-00A0C9A83DA1
DEFINE_GUID(IID_ISearchAssistantOC,      0x72423E8F, 0x8011, 0x11D2, 0xBE, 0x79, 0x00, 0xA0, 0xC9, 0xA8, 0x3D, 0xA1);

// 72423E8F-8011-11d2-BE79-00A0C9A83DA3
DEFINE_GUID(IID_ISearchAssistantOC3,     0x72423E8F, 0x8011, 0x11D2, 0xBE, 0x79, 0x00, 0xA0, 0xC9, 0xA8, 0x3D, 0xA3);

// "1611FDDA-445B-11d2-85DE-00C04FA35C89"
DEFINE_GUID(DIID__SearchAssistantEvents, 0x1611FDDA, 0x445B, 0x11d2, 0x85, 0xDE, 0x00, 0xC0, 0x4F, 0xA3, 0x5C, 0x89);

// "801C1AD5-C47C-428c-97AF-E991E4857D97"
DEFINE_GUID(IID_INSCTree2,               0x801C1AD5, 0xC47C, 0x428c, 0x97, 0xAF, 0xE9, 0x91, 0xE4, 0x85, 0x7D, 0x97);

// 3a77ce00-6f74-4594-9399-c4578aa4a1b6
DEFINE_GUID(IID_INotifyAppStart,         0x3a77ce00, 0x6f74, 0x4594, 0x93, 0x99, 0xc4, 0x57, 0x8a, 0xa4, 0xa1, 0xb6);

// 0AD364CE-ADCB-11d3-8269-00805FC732C0
DEFINE_GUID(IID_ITravelLogClient2,       0x0AD364CE, 0xADCB, 0x11d3, 0x82, 0x69, 0x00, 0x80, 0x5F, 0xC7, 0x32, 0xC0);

//"667115ac-dc02-11d1-ba57-00c04fc2040e"
DEFINE_GUID(IID_IVersionHost,            0x667115ac, 0xdc02, 0x11d1, 0xba, 0x57, 0x00, 0xc0, 0x4f, 0xc2, 0x04, 0x0e);

DEFINE_GUID(IID_IInitViewLinkedWebOC,    0xe787f2c0, 0x3d21, 0x4d98, 0x85, 0xc8, 0xa0, 0x38, 0x19, 0x5b, 0xa6, 0x49);

// "639447BD-B2D3-44b9-9FB0-510F23CB45E4"
DEFINE_GUID(IID_IRatingNotification,     0x639447BD, 0xB2D3, 0x44b9, 0x9F, 0xB0, 0x51, 0x0F, 0x23, 0xCB, 0x45, 0xE4);

//"3050f84b-98b5-11cf-bb82-00aa00bdce0b"
DEFINE_GUID(IID_IPrivacyServices,        0x3050f84b, 0x98b5, 0x11cf, 0xbb, 0x82, 0x00, 0xaa, 0x00, 0xbd, 0xce, 0x0b);

//3050f6dc-98b5-11cf-bb82-00aa00bdce0b
DEFINE_GUID(IID_IHTMLPrivateWindow,      0x3050f6dc, 0x98b5, 0x11cf, 0xbb, 0x82, 0x00, 0xaa, 0x00, 0xbd, 0xce, 0x0b);

// "70F55181-5FEA-4900-B6B8-7343CB0A348C"
DEFINE_GUID(IID_IDVGetEnum,              0x70F55181, 0x5FEA, 0x4900, 0xB6, 0xB8, 0x73, 0x43, 0xCB, 0x0A, 0x34, 0x8C);

// "85BD8E82-0FBA-11d1-90C3-00C04FC2F568"
DEFINE_GUID(IID_IChannelMgr,             0x85BD8E82, 0x0FBA, 0x11d1, 0x90, 0xC3, 0x00, 0xC0, 0x4F, 0xC2, 0xF5, 0x68);

// "47851649-a2ef-4e67-baec-c6a153ac72ec"
DEFINE_GUID(IID_IMruPidlList,            0x47851649, 0xa2ef, 0x4e67, 0xba, 0xec, 0xc6, 0xa1, 0x53, 0xac, 0x72, 0xec);

// "fe787bcb-0ee8-44fb-8c89-12f508913c40"
DEFINE_GUID(IID_IMruDataList,            0xfe787bcb, 0x0ee8, 0x44fb, 0x8c, 0x89, 0x12, 0xf5, 0x08, 0x91, 0x3c, 0x40);

// {53C74826-AB99-4d33-ACA4-3117F51D3788}
DEFINE_GUID(CLSID_FolderItemsFDF,        0x53c74826, 0xab99, 0x4d33, 0xac, 0xa4, 0x31, 0x17, 0xf5, 0x1d, 0x37, 0x88);

// b3cdae90-d170-11d0-802b-00c04fd75d13
DEFINE_GUID(CLSID_ChannelMgr,            0xb3cdae90, 0xd170, 0x11d0, 0x80, 0x2b, 0x00, 0xc0, 0x4f, 0xd7, 0x5d, 0x13);

// 42aedc87-2188-41fd-b9a3-0c966feabec1
DEFINE_GUID(CLSID_MruPidlList,           0x42aedc87, 0x2188, 0x41fd, 0xb9, 0xa3, 0x0c, 0x96, 0x6f, 0xea, 0xbe, 0xc1);

// "53bd6b4e-3780-4693-afc3-7161c2f3ee9c"
DEFINE_GUID(CLSID_MruLongList,           0x53bd6b4e, 0x3780, 0x4693, 0xaf, 0xc3, 0x71, 0x61, 0xc2, 0xf3, 0xee, 0x9c);

// "bf50b68e-29b8-4386-ae9c-9734d5117cd5"
DEFINE_GUID(CLSID_FolderMarshalStub,     0xbf50b68e, 0x29b8, 0x4386, 0xae, 0x9c, 0x97, 0x34, 0xd5, 0x11, 0x7c, 0xd5);

// "ba9239a4-3dd5-11d2-bf8b-00c04fb93661"
DEFINE_GUID(IID_ISearch,                 0xba9239a4, 0x3dd5, 0x11d2, 0xbf, 0x8b, 0x00, 0xc0, 0x4f, 0xb9, 0x36, 0x61);

DEFINE_GUID(IID_ISearches,               0x47c922a2, 0x3dd5, 0x11d2, 0xbf, 0x8b, 0x00, 0xc0, 0x4f, 0xb9, 0x36, 0x61);

// 
DEFINE_GUID(IID_ISearchCompanionInfo,    0xDB5CEF35, 0xBEC6, 0x4762, 0xA1, 0xBD, 0x25, 0x3F, 0x5B, 0xF6, 0x7C, 0x72);

//
DEFINE_GUID(IID_IUrlTrackingStg,         0xf2f8cbb3, 0xb040, 0x11d0, 0xbb, 0x16, 0x00, 0xc0, 0x4f, 0xb6, 0x6f, 0x63);

// 
DEFINE_GUID(IID_IACLCustomMRU,           0xF729FC5E, 0x8769, 0x4f3e, 0xBD, 0xB2, 0xD7, 0xB5, 0x0F, 0xD2, 0x27, 0x5B);

// 
DEFINE_GUID(IID_IShellBrowserService,    0x1307ee17, 0xea83, 0x49eb, 0x96, 0xb2, 0x3a, 0x28, 0xe2, 0xd7, 0x04, 0x8a);

// 
DEFINE_GUID(IID_IObjectWithQuerySource,  0xb3dcb623, 0x4280, 0x4eb1, 0x84, 0xb3, 0x8d, 0x07, 0xe8, 0x4f, 0x29, 0x9a);

// 
DEFINE_GUID(IID_IPersistString2,         0x3c44ba76, 0xde0e, 0x4049, 0xb6, 0xe4, 0x6b, 0x31, 0xa5, 0x26, 0x27, 0x07);

// 
DEFINE_GUID(IID_IAssociationElement,     0xe58b1abf, 0x9596, 0x4dba, 0x89, 0x97, 0x89, 0xdc, 0xde, 0xf4, 0x69, 0x92);

// 
DEFINE_GUID(IID_IQuerySource,            0xc7478486, 0x7583, 0x49e7, 0xa6, 0xc2, 0xfa, 0xf8, 0xf0, 0x2b, 0xc3, 0x0e);

// 
DEFINE_GUID(IID_IObjectWithRegistryKey,  0x5747C63F, 0x1DE8, 0x423f, 0x98, 0x0F, 0x00, 0xCB, 0x07, 0xF4, 0xC4, 0x5B);

// 
DEFINE_GUID(CLSID_SearchCompanionInfo,   0xAC1B0D5D, 0xDD59, 0x4ff0, 0x93, 0xF8, 0xA8, 0x43, 0x73, 0x82, 0x16, 0x06);

// 
DEFINE_GUID(CLSID_AssocShellElement,     0xc461837f, 0xea59, 0x494a, 0xb7, 0xc6, 0xcd, 0x04, 0x0e, 0x37, 0x18, 0x5e);

// 
DEFINE_GUID(CLSID_AssocProgidElement,    0x9016d0dd, 0x7c41, 0x46cc, 0xa6, 0x64, 0xbf, 0x22, 0xf7, 0xcb, 0x18, 0x6a);

// 
DEFINE_GUID(CLSID_AssocClsidElement,     0x57aea081, 0x5ee9, 0x4c27, 0xb2, 0x18, 0xc4, 0xb7, 0x02, 0x96, 0x4c, 0x54);

// 
DEFINE_GUID(CLSID_AssocSystemElement,    0xa6c4baad, 0x4af5, 0x4191, 0x86, 0x85, 0xc2, 0xc8, 0x95, 0x3a, 0x14, 0x8c);

// 
DEFINE_GUID(CLSID_AssocPerceivedElement, 0x0dc5fb21, 0xb93d, 0x4e3d, 0xbb, 0x2f, 0xce, 0x4e, 0x36, 0xa7, 0x06, 0x01);

// 
DEFINE_GUID(CLSID_AssocApplicationElement, 0x0c2bf91b, 0x8746, 0x4fb1, 0xb4, 0xd7, 0x7c, 0x03, 0xf8, 0x90, 0xb1, 0x68);

// 
DEFINE_GUID(CLSID_AssocFolderElement, 0x7566df7a, 0x42cc, 0x475d, 0xa0, 0x25, 0x12, 0x05, 0xdd, 0xf4, 0x91, 0x1f);

// 
DEFINE_GUID(CLSID_AssocStarElement, 0x0633b720, 0x6926, 0x404c, 0xb6, 0xb3, 0x92, 0x3b, 0x1a, 0x50, 0x17, 0x43);

// 
DEFINE_GUID(CLSID_AssocClientElement, 0x3c81e7fa, 0x1f3b, 0x464a, 0xa3, 0x50, 0x11, 0x4a, 0x25, 0xbe, 0xb2, 0xa2);


//----

EXTERN_C DWORD g_tlsThreadRef = 0;
EXTERN_C DWORD g_tlsOtherThreadsRef = 0;

EXTERN_C BOOL IsCharAlphaNumericWrapW(WCHAR wch)
{
    DebugBreak();
    return FALSE;
}

EXTERN_C DWORD SHDeleteOrphanKeyA(HKEY hkey, LPCSTR pszSubKey)
{
    DebugBreak();
    return 0;
}

EXTERN_C HWND HtmlHelpA(HWND hwndCaller, LPCSTR pszFile, UINT uCommand, DWORD_PTR dwData)
{
    DebugBreak();
    return NULL;
}

EXTERN_C HWND HtmlHelpW(HWND hwndCaller, LPCWSTR pszFile, UINT uCommand, DWORD_PTR dwData)
{
    DebugBreak();
    return NULL;
}

EXTERN_C ULONG SHGetPerScreenResName(WCHAR* pszRes, ULONG cch, DWORD dwVersion)
{
    DebugBreak();
    return 0;
}

EXTERN_C BOOL PlaySoundWrapW( LPCWSTR pszSound, HMODULE hmod, DWORD fdwSound)
{
    DebugBreak();
    return FALSE;
}

EXTERN_C UINT WINAPI MsiGetProductInfoW(__in LPCWSTR szProduct, __in LPCWSTR szAttribute, __out_ecount_opt(*pcchValueBuf) LPWSTR lpValueBuf, __inout_opt LPDWORD pcchValueBuf)
{
    DebugBreak();
    return 0;
}

unsigned short GetSystemDefaultUILanguage(void)
{
    return 0;
}

EXTERN_C DWORD WNetGetResourceInformationW(
    LPNETRESOURCEW  lpNetResource,
    LPVOID lpBuffer,
    LPDWORD lpcbBuffer,
    LPWSTR* lplpSystem
    )
{
    DebugBreak();
    return 0;
}

EXTERN_C HRESULT ConvertINetUnicodeToMultiByte(LPDWORD lpdwMode, DWORD dwEncoding, LPCWSTR lpSrcStr, LPINT lpnWideCharCount, LPSTR lpDstStr, LPINT lpnMultiCharCount)
{
    DebugBreak();
    return E_NOTIMPL;
}

EXTERN_C HRESULT ConvertINetMultiByteToUnicode(LPDWORD lpdwMode, DWORD dwEncoding, LPCSTR lpSrcStr, LPINT lpnMultiCharCount, LPWSTR lpDstStr, LPINT lpnWideCharCount)
{
    DebugBreak();
    return E_NOTIMPL;
}

EXTERN_C LONG FixRegDataA(HKEY hkey, PCSTR  pszValue, DWORD dwFlags, DWORD *pdwType, void *pvData, DWORD *pcbData, DWORD cbDataBuffer, LONG lr)
{
    DebugBreak();
    return 0;
}

EXTERN_C DWORD WNetRestoreConnectionW(HWND hWnd, LPCWSTR lpDevice)
{
    DebugBreak();
    return 0;
}

EXTERN_C DWORD WNetGetLastErrorW(
    LPDWORD    lpError,
    LPWSTR lpErrorBuf,
    DWORD      nErrorBufSize,
    LPWSTR  lpNameBuf,
    DWORD      nNameBufSize
    )
{
    DebugBreak();
    return 0;
}

EXTERN_C HRESULT Rfc1766ToLcidW(LCID *pLocale, LPCWSTR pszRfc1766)
{
    DebugBreak();
    return E_NOTIMPL;
}

EXTERN_C BOOL Str_SetPtrA(LPSTR * ppsz, LPCSTR psz)
{
    DebugBreak();
    return FALSE;
}

EXTERN_C HRESULT SHCreatePropertyBagOnMemory(DWORD grfMode, REFIID riid, void **ppv)
{
    DebugBreak();
    return E_NOTIMPL;
}

void _FileTimeDeltaDays(FILETIME *pftBase, FILETIME *pftNew, int Days)
{
    DebugBreak();
}

EXTERN_C LONG OpenRegUSKey(LPCTSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
{
    DebugBreak();
    return 0;
}

// EXTERN_C HANDLE SHGlobalCounterCreate(REFGUID rguid)
// {
//     DebugBreak();
//     return NULL;
// }

// EXTERN_C HANDLE SHGlobalCounterCreateNamedW(LPCWSTR szName, LONG lInitialValue)
// {
//     DebugBreak();
//     return NULL;
// }

EXTERN_C DWORD GetUrlSchemeA(LPCSTR pszUrl)
{
    DebugBreak();
    return 0;
}

EXTERN_C BOOL SHCreateFromDesktop(PNEWFOLDERINFO pfi)
{
    DebugBreak();
    return FALSE;
}

EXTERN_C int LoadStringWrapW(HINSTANCE hInstance, UINT uID, LPWSTR lpBuffer, int nBufferMax)
{
    return LoadStringW(hInstance, uID, lpBuffer, nBufferMax);
}

// HRESULT CDocObjectView_Create(IShellView** ppv, IShellFolder* psf, LPCITEMIDLIST pidl)
// {
//     DebugBreak();
//     return E_NOTIMPL;
// }

extern "C" HRESULT IShellFolder_GetDisplayNameOf(
    IShellFolder * psf,
    LPCITEMIDLIST pidl,
    DWORD uFlags,
    LPSTRRET lpName,
    DWORD dwFlags2)
{
    DebugBreak();
    return E_NOTIMPL;
}

extern "C" BOOL SHFusionInitializeFromModule(HMODULE hMod)
{
    OutputDebugStringA("SHFusionInitializeFromModule not impl\n");
    return TRUE;
}

extern "C" HRESULT SHRegisterTypeLib(void)
{
    DebugBreak();
    return E_NOTIMPL;
}

extern "C" HWND WINAPI FindWindowExWrapW(HWND p1, HWND p2, LPCWSTR p3, LPCWSTR p4)
{
    return FindWindowExW(p1, p2, p3, p4);
}

extern "C" ATOM RegisterClassWrapW(CONST WNDCLASSW* lpWndClass)
{
    return RegisterClassW(lpWndClass);
}

extern "C" HRESULT HistFolder_CreateInstance(IUnknown* pUnkOuter, IUnknown **ppunk, LPCOBJECTINFO poi)
{
    DebugBreak();
    return E_NOTIMPL;
}

extern "C" HRESULT CacheFolder_CreateInstance(IUnknown* pUnkOuter, IUnknown **ppunk, LPCOBJECTINFO poi)
{
    DebugBreak();
    return E_NOTIMPL;
}

extern "C" HRESULT CCDFCopyHook_CreateInstance(IUnknown* pUnkOuter, IUnknown** ppunk, LPCOBJECTINFO poi)
{
    DebugBreak();
    return E_NOTIMPL;
}

extern "C" LPCTSTR Dbg_GetVTName(VARTYPE vt)
{
    DebugBreak();
    return NULL;
}

extern "C" HRESULT GetMarkOfTheWeb(LPCSTR, LPCSTR, DWORD, LPSTR *)
{
    DebugBreak();
    return E_NOTIMPL;
}

extern "C" HRESULT MimeOleCreateMessage( IUnknown *pUnkOuter, IMimeMessage **ppMessage)
{
    DebugBreak();
    return E_NOTIMPL;
}

extern "C" HRESULT MimeOleCreateVirtualStream(IStream **ppStream)
{
    DebugBreak();
    return E_NOTIMPL;
}

extern "C" HRESULT MimeOleParseMhtmlUrl(LPSTR pszUrl, LPSTR *ppszRootUrl, LPSTR *ppszBodyUrl)
{
    DebugBreak();
    return E_NOTIMPL;
}

extern "C" HRESULT MimeOleSetCompatMode(DWORD dwMode)
{
    DebugBreak();
    return E_NOTIMPL;
}

extern "C" int WINAPI TranslateAcceleratorWrapW(HWND hWnd, HACCEL hAccTable, LPMSG lpMsg)
{
    return TranslateAcceleratorW(hWnd, hAccTable, lpMsg);
}

extern "C" HRESULT IShellFolder_CompareIDs(IShellFolder * psf, LPARAM lParam, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
{
    DebugBreak();
    return E_NOTIMPL;
}

extern "C" LRESULT DefWindowProcWrapW(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
    return DefWindowProcW(hWnd, Msg, wParam, lParam);
}

extern "C" BOOL NT5_DeactivateActCtx(ULONG_PTR p)
{
    DebugBreak();
return FALSE;
}

extern "C" BOOL NT5_ActivateActCtx(HANDLE h, ULONG_PTR * p)
{
    DebugBreak();
    return FALSE;
}

extern "C" BOOL GetInfoTip(IShellFolder* psf, LPCITEMIDLIST pidl, LPTSTR pszText, int cchTextMax)
{
    DebugBreak();
    return FALSE;
}

extern "C" int DrawTextWrapW(HDC hDC, LPCWSTR lpString, int nCount, LPRECT lpRect, UINT uFormat)
{
    return DrawTextW(hDC, lpString, nCount, lpRect, uFormat);
}

extern "C" HRESULT SHLoadOLE(LPARAM lParam)
{
    return S_OK;
}

extern "C" HRESULT ILLoadFromStream(IStream * pstm, LPITEMIDLIST * pidl)
{
    DebugBreak();
    return E_NOTIMPL;
}

extern "C" HPROPSHEETPAGE Whistler_CreatePropertySheetPageW(LPCPROPSHEETPAGEW a)
{
    DebugBreak();
    return NULL;
}

extern "C" LPCTSTR Dbg_GetHRESULTName(HRESULT hr)
{
    DebugBreak();
    return NULL;
}

extern "C" HANDLE SHSetTimerQueueTimer(HANDLE hQueue, WAITORTIMERCALLBACK pfnCallback, LPVOID pContext, DWORD dwDueTime, DWORD dwPeriod, LPCSTR lpszLibrary, DWORD dwFlags)
{
    DebugBreak();
    return NULL;
}

extern "C" HRESULT SHCreatePropertyBagOnRegKey(HKEY hk, LPCWSTR pszSubKey, DWORD grfMode, REFIID riid, void** ppv)
{
    DebugBreak();
    return E_NOTIMPL;
}

extern "C" PROPSHEETPAGE* Whistler_AllocatePropertySheetPage(int numPages, DWORD * pc)
{
    DebugBreak();
    return NULL;
}

extern "C" HRESULT LcidToRfc1766W(LCID Locale, LPWSTR pszRfc1766, int nChar)
{
    DebugBreak();
    return E_NOTIMPL;
}

extern "C" void SHDestroyIETHREADPARAM(IETHREADPARAM * piei)
{
    DebugBreak();
}

extern "C" LONG PathProcessCommand(LPCWSTR lpSrc, LPWSTR lpDest, int iMax, DWORD dwFlags)
{
    DebugBreak();
    return 0;
}

extern "C" DWORD GetModuleFileNameWrapW(HMODULE hModule, LPWSTR lpFilename, DWORD nSize)
{
    return GetModuleFileNameW(hModule, lpFilename, nSize);
}

extern "C" BOOL MIME_GetExtensionW(LPCWSTR pcszMIMEType, LPWSTR pszExtensionBuf, UINT ucExtensionBufLen)
{
    DebugBreak();
    return FALSE;
}

extern "C" HRESULT ZoneCheckUrlExW(LPCWSTR pwzUrl, DWORD* pdwPolicy, DWORD dwPolicySize, DWORD* pdwContext, DWORD dwContextSize, DWORD dwActionType, DWORD dwFlags, IInternetSecurityMgrSite* pisms)
{
    DebugBreak();
    return E_FAIL;
}

// extern "C" HRESULT _URLMONMonikerFromPidl(LPCITEMIDLIST pidl, IMoniker * *ppmk, BOOL * pfFileProtocol)
// {
//     DebugBreak();
//     return E_FAIL;
// }

extern "C" HRESULT RatingEnabledQuery()
{
    DebugBreak();
    return E_FAIL;
}

extern "C" BOOL MirrorIcon(HICON* phiconSmall, HICON* phiconLarge)
{
    DebugBreak();
    return FALSE;
}

extern "C" HWND SHNoFusionCreateWindowEx(DWORD dwExStyle, LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam)
{
    // DO NOT ACTIVATE A MANIFEST.
    HWND hwnd;
    hwnd = CreateWindowEx(dwExStyle, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam);
    return hwnd;
}

extern "C" void ZoneConfigureW(HWND hwnd, LPCWSTR pwszUrl)
{
    DebugBreak();
}

extern "C" int ZoneComputePaneSize(HWND hwndStatus)
{
    DebugBreak();
    return 0;
}

extern "C" HRESULT ShowHTMLDialogEx(HWND hwndParent, IMoniker * pMk, DWORD dwDialogFlags, VARIANT * pvarArgIn, WCHAR * pchOptions, VARIANT * pvarArgOut)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" HRESULT ShowModelessHTMLDialog(HWND hwndParent, IMoniker * pMk, VARIANT * pvarArgIn, VARIANT * pvarOptions, IHTMLWindow2 ** ppWindow)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" HPROPSHEETPAGE SHNoFusionCreatePropertySheetPageW (LPCPROPSHEETPAGEW a)
{
    DebugBreak();
    return NULL;
}

extern "C" void Channels_SetBandInfoSFB(IUnknown* punkBand)
{
    DebugBreak();
}

extern "C" HRESULT IUnknown_SetBandInfoSFB(IUnknown *punkBand, BANDINFOSFB *pbi)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" LPITEMIDLIST Channel_GetFolderPidl()
{
    DebugBreak();
    return NULL;
}

extern "C" IDeskBand* ChannelBand_Create(LPCITEMIDLIST pidlDefault)
{
    DebugBreak();
    return NULL;
}

extern "C" HRESULT SHOpenNewFrame(LPITEMIDLIST pidlNew, ITravelLog * ptl, DWORD dwBrowserIndex, UINT uFlags)
{
    DebugBreak();
    return E_FAIL;
}

// extern "C" void Menu_Replace(HMENU hmenuDst, HMENU hmenuSrc)
// {
//     DebugBreak();
// }

extern "C" BOOL PathFileExistsAndAttributesW(LPCWSTR pszPath, OPTIONAL DWORD* pdwAttributes)
{
    DebugBreak();
    return FALSE;
}

extern "C" BOOL GetMenuItemInfoWrapW(HMENU hMenu, UINT uItem, BOOL fByPosition, LPMENUITEMINFOW pmiiW)
{
    DebugBreak();
    return FALSE;
}

extern "C" BOOL SHActivateContext(ULONG_PTR* pdwCookie)
{
    DebugBreak();
    return NULL;
}

extern "C" void SHDeactivateContext(ULONG_PTR dwCookie)
{
    DebugBreak();
}

extern "C" HMODULE SHFusionLoadLibrary(LPCTSTR lpLibFileName)
{
    DebugBreak();
    return NULL;
}

extern "C" BOOL DelayLoadCC()
{
    DebugBreak();
    return FALSE;
}

extern "C" BOOL SHFusionInitialize()
{
    DebugBreak();
    return FALSE;
}

extern "C" void SHFusionUninitialize()
{
    DebugBreak();
}

// HTHEME GetThemeHandle(HWND hwnd, THEMECLASSID id)
// {
//     DebugBreak();
//     return NULL;
// }

extern "C" HRESULT RatingObtainQuery(LPCSTR pszTargetUrl, DWORD dwUserData, void (*fCallback)(DWORD dwUserData, HRESULT hr, LPCSTR pszRating, void* lpvRatingDetails), HANDLE* phRatingObtainQuery)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" HRESULT RatingObtainCancel(HANDLE hRatingObtainQuery)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" HRESULT RatingFreeDetails(void *pRatingDetails)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" HRESULT RatingCheckUserAccess(LPCSTR pszUsername, LPCSTR pszURL, LPCSTR pszRatingInfo, LPBYTE pData, DWORD cbData, void** ppRatingDetails)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" HRESULT CreateURLFileContentsW(LPCWSTR pwszUrl, LPSTR * ppszOut)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" void DeinitTheme()
{
    DebugBreak();
}

extern "C" BOOL ApphelpCheckShellObject(REFCLSID ObjectCLSID, BOOL bShimIfNecessary, ULONGLONG* pullFlags)
{
    return TRUE;
}

extern "C" INT_PTR SHFusionDialogBoxParam(HINSTANCE hInstance, LPCTSTR lpTemplateName, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParam)
{
    DebugBreak();
    return 0;
}

extern "C" HWND SHFusionCreateWindowEx(DWORD dwExStyle, LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam)
{
    DebugBreak();
    return NULL;
}

extern "C" HWND SHFusionCreateDialogParam(HINSTANCE hInstance, LPCTSTR lpTemplateName, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParam)
{
    DebugBreak();
    return NULL;
}

extern "C" DWORD NT5_GetSaveFileNameW(LPOPENFILENAMEW pofn)
{
    DebugBreak();
    return 0;
}

extern "C" HRESULT SHGetNavigateTarget(IShellFolder *psf, LPCITEMIDLIST pidl, LPITEMIDLIST *ppidl, DWORD *pdwAttribs)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" DWORD SHGetIniStringW(LPCWSTR lpSection, LPCWSTR lpKey, LPWSTR lpBuf, DWORD nSize, LPCWSTR lpFile)
{
    DebugBreak();
    return 0;
}

extern "C" BOOL SHOpenFolderWindow(IETHREADPARAM* pieiIn)
{
    DebugBreak();
    return FALSE;
}

extern "C" IETHREADPARAM* SHCreateIETHREADPARAM(LPCWSTR pszCmdLineIn, int nCmdShowIn, ITravelLog* ptlIn, IEFreeThreadedHandShake* piehsIn)
{
    DebugBreak();
    return NULL;
}

extern "C" HRESULT ShowHTMLDialog(HWND hwndParent, IMoniker * pMk, VARIANT * pvarArgIn, WCHAR * pchOptions, VARIANT * pvarArgOut)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" BOOL SHParseIECommandLine(LPCWSTR * ppszCmdLine, IETHREADPARAM * piei)
{
    DebugBreak();
    return FALSE;
}

extern "C" BOOL SHSetIniStringW(LPCWSTR lpSection, LPCWSTR lpKey, LPCWSTR lpString, LPCWSTR lpFile)
{
    DebugBreak();
    return FALSE;
}

extern "C" BOOL SHQueueUserWorkItem(LPTHREAD_START_ROUTINE pfnCallback, LPVOID pContext, LONG lPriority, DWORD_PTR dwTag, DWORD_PTR* pdwId, LPCSTR pszModule, DWORD dwFlags)
{
    DebugBreak();
    return FALSE;
}

extern "C" HWND SHFusionCreateWindow(
    LPCTSTR lpClassName, 
    LPCTSTR lpWindowName, 
    DWORD dwStyle, 
    int x, 
    int y, 
    int nWidth, 
    int nHeight, 
    HWND hWndParent, 
    HMENU hMenu, 
    HINSTANCE hInstance, 
    LPVOID lpParam)
{
    DebugBreak();
    return NULL;
}

extern "C" HRESULT SHPropertyBag_ReadType(IPropertyBag * ppb, LPCWSTR pszPropName, VARIANT * pv, VARTYPE vt)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" HRESULT SHPropertyBag_ReadStr(IPropertyBag* ppb, LPCWSTR pwzPropName, LPWSTR psz, int cch)
{
    DebugBreak();
    return E_FAIL;
}
extern "C" HRESULT SHPropertyBag_ReadBSTR(IPropertyBag* ppb, LPCWSTR pwzPropName, BSTR* pbstr)
{
    DebugBreak();
    return E_FAIL;
}


extern "C" HRESULT SHPropertyBag_WriteStr(IPropertyBag* ppb, LPCWSTR pwzPropName, LPCWSTR psz)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" HRESULT SHPropertyBag_ReadInt(IPropertyBag* ppb, LPCWSTR pwzPropName, INT* piResult)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" HRESULT SHPropertyBag_WriteInt(IPropertyBag* ppb, LPCWSTR pwzPropName, INT iValue)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" HRESULT SHPropertyBag_ReadSHORT(IPropertyBag* ppb, LPCWSTR pwzPropName, SHORT* psh)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" HRESULT SHPropertyBag_WriteSHORT(IPropertyBag* ppb, LPCWSTR pwzPropName, SHORT sh)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" HRESULT SHPropertyBag_ReadLONG(IPropertyBag* ppb, LPCWSTR pwzPropName, LONG* pl)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" HRESULT SHPropertyBag_WriteLONG(IPropertyBag* ppb, LPCWSTR pwzPropName, LONG l)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" HRESULT SHPropertyBag_ReadDWORD(IPropertyBag* ppb, LPCWSTR pwzPropName, DWORD* pdw)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" HRESULT SHPropertyBag_WriteDWORD(IPropertyBag* ppb, LPCWSTR pwzPropName, DWORD dw)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" HRESULT SHPropertyBag_ReadBOOL(IPropertyBag* ppb, LPCWSTR pwzPropName, BOOL* pfResult)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" HRESULT SHPropertyBag_WriteBOOL(IPropertyBag* ppb, LPCWSTR pwzPropName, BOOL fValue)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" HRESULT SHPropertyBag_ReadGUID(IPropertyBag* ppb, LPCWSTR pwzPropName, GUID* pguid)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" HRESULT SHPropertyBag_WriteGUID(IPropertyBag* ppb, LPCWSTR pwzPropName, const GUID* pguid)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" HRESULT SHPropertyBag_ReadPIDL(IPropertyBag* ppb, LPCWSTR pwzPropName, LPITEMIDLIST* ppidl)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" HRESULT SHPropertyBag_WritePIDL(IPropertyBag* ppb, LPCWSTR pwzPropName, LPCITEMIDLIST pidl)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" HRESULT SHPropertyBag_ReadPOINTL(IPropertyBag* ppb, LPCWSTR pwzPropName, POINTL* ppt)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" HRESULT SHPropertyBag_WritePOINTL(IPropertyBag* ppb, LPCWSTR pwzPropName, const POINTL* ppt)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" HRESULT SHPropertyBag_ReadPOINTS(IPropertyBag* ppb, LPCWSTR pwzPropName, POINTS* ppt)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" HRESULT SHPropertyBag_WritePOINTS(IPropertyBag* ppb, LPCWSTR pwzPropName, const POINTS* ppt)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" HRESULT SHPropertyBag_ReadRECTL(IPropertyBag* ppb, LPCWSTR pwzPropName, RECTL* prc)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" HRESULT SHPropertyBag_WriteRECTL(IPropertyBag* ppb, LPCWSTR pwzPropName, const RECTL* prc)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" HRESULT SHPropertyBag_ReadStream(IPropertyBag* ppb, LPCWSTR pwzPropName, IStream** ppstm)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" HRESULT SHPropertyBag_WriteStream(IPropertyBag* ppb, LPCWSTR pwzPropName, IStream* pstm)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" HRESULT SHPropertyBag_Delete(IPropertyBag* ppb, LPCWSTR pszPropName)
{
    DebugBreak();
    return E_FAIL;
}

extern "C" DWORD SHGetValueGoodBootW(HKEY hkeyParent, LPCWSTR pcwzSubKey, LPCWSTR pcwzValue, PDWORD pdwValueType, PBYTE pbyteBuf, PDWORD pdwcbBufLen)
{
    DebugBreak();
    return E_FAIL;
}